/**
 * tabbar 选择的策略，更详细的介绍见 tabbar.md 文件
 * 0: 'NO_TABBAR' `无 tabbar`
 * 1: 'NATIVE_TABBAR'  `完全原生 tabbar`
 * 2: 'CUSTOM_TABBAR_WITH_CACHE' `有缓存自定义 tabbar`
 * 3: 'CUSTOM_TABBAR_WITHOUT_CACHE' `无缓存自定义 tabbar`
 *
 * 温馨提示：本文件的任何代码更改了之后，都需要重新运行，否则 pages.json 不会更新导致错误
 */

export const TABBAR_MAP = {
  NO_TABBAR: 0,
  NATIVE_TABBAR: 1,
  CUSTOM_TABBAR_WITH_CACHE: 2,
  CUSTOM_TABBAR_WITHOUT_CACHE: 3,
}
// TODO：通过这里切换使用tabbar的策略
export const selectedTabbarStrategy = TABBAR_MAP.CUSTOM_TABBAR_WITH_CACHE

// selectedTabbarStrategy==NATIVE_TABBAR(1) 时，需要填 iconPath 和 selectedIconPath
// selectedTabbarStrategy==CUSTOM_TABBAR(2,3) 时，需要填 icon 和 iconType
// selectedTabbarStrategy==NO_TABBAR(0) 时，tabbarList 不生效

// NATIVE_TABBAR(1) 和 CUSTOM_TABBAR_WITH_CACHE(2) 时，需要tabbar缓存
export const cacheTabbarEnable = selectedTabbarStrategy === TABBAR_MAP.NATIVE_TABBAR
  || selectedTabbarStrategy === TABBAR_MAP.CUSTOM_TABBAR_WITH_CACHE

// 业主端 TabBar
export const userTabBarList = [
  {
    pagePath: 'pages/user/index',
    text: '首页',
    icon: 'home',
    iconType: 'uiLib',
  },
  {
    pagePath: 'pages/user/electricity/index',
    text: '电表',
    icon: 'home',
    iconType: 'uiLib',
  },
  {
    pagePath: 'pages/user/water/index',
    text: '水表',
    icon: 'home',
    iconType: 'uiLib',
  },
]

// 物业端 TabBar
export const adminTabBarList = [
  {
    pagePath: 'pages/admin/index',
    text: '工作台',
    icon: 'home',
    iconType: 'uiLib',
  },
  {
    pagePath: 'pages/admin/electricity/index',
    text: '电表',
    icon: 'home',
    iconType: 'uiLib',
  },
  {
    pagePath: 'pages/admin/water/index',
    text: '水表',
    icon: 'home',
    iconType: 'uiLib',
  },
]

export const commonTabBarList = [
  {
    pagePath: 'pages/common/profile/index',
    text: '我的',
    icon: 'user',
    iconType: 'uiLib',
  },
]
// 组合所有 tabBar 页面，用于 pages.config.ts
const allPages = [...userTabBarList, ...adminTabBarList, ...commonTabBarList]
export const tabBarPages = allPages.map(item => item.pagePath)

const _tabbar: any = {
  // 自定义 tabbar
  custom: true,
  // tabbar 列表
  list: [], // 这里设置为空，因为列表是动态的
  // 其他 tabbar 全局样式
  borderStyle: 'black',
  selectedColor: '#007AFF',
  color: '#333333',
  backgroundColor: '#FFFFFF',
}

// 0和1 需要显示底部的tabbar的各种配置，以利用缓存
export const tabBar = cacheTabbarEnable ? _tabbar : undefined
